package 泛型如何编译的.为什么不能实例化泛型类型数组;

import java.util.Arrays;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 姚东名
 * Date: 2024-06-24
 * Time: 18:05
 */
class MyArray2 <T> {
    public T[] array = (T[]) new Object[10];

    public T getPos(int pos) {
        return array[pos];
    }

    public void setVal(int pos, T val) {
        this.array[pos] = val;
    }
    public T[] getArray() {
        return array;
    }
}
public class Test {
    public static void main(String[] args) {
        MyArray2<Integer> myArray2 = new MyArray2<>();
        myArray2.setVal(0, 10);
        myArray2.setVal(1, 20);
        myArray2.setVal(2, 30);
        Object[] ret = myArray2.getArray();
        System.out.println(ret);
    }
    public static void main2(String[] args) {
        MyArray2<Integer> myArray2 = new MyArray2<>();
        System.out.println(myArray2.getArray());
    }
    public static void main1(String[] args) {
        MyArray2<Integer> myArray2 = new MyArray2<>();
        Integer[] string = myArray2.getArray();
    }
}

/*
Exception in thread "main" java.lang.ClassCastException: [Ljava.lang.Object; cannot be cast to [Ljava.lang.Integer;
 */

/*
通俗讲就是：返回的Object数组里面，可能存放的是任何的数据类型，可能是String，可能是Person，运行的时
候，直接转给Integer类型的数组，编译器认为是不安全的。
 */
